﻿//#define _CRT_SECURE_NO_WARNINGS  1
////一定要动手，例子不管多么简单，建议至少自己手敲一遍看看是否理解了里头的细枝末节。
////一定要学会思考，思考为什么要这样，而不是那样。还要举一反三地思考
//#include<iostream>
//#include<string>
//#include<vector>
//using namespace std;
////class Solution {
////public:
////	string multiply(string num1, string num2) {
////		if (num1 == "0" || num2 == "0") {
////			return "0";
////		}
////		int m = num1.size(), n = num2.size();
////		auto ansArr = vector<int>(m + n);
////		for (int i = m - 1; i >= 0; i--) {
////			int x = num1.at(i) - '0';
////			for (int j = n - 1; j >= 0; j--) {
////				int y = num2.at(j) - '0';
////				ansArr[i + j + 1] += x * y;
////			}
////		}
////		for (int i = m + n - 1; i > 0; i--) {
////			ansArr[i - 1] += ansArr[i] / 10;
////			ansArr[i] %= 10;
////		}
////		int index = ansArr[0] == 0 ? 1 : 0;
////		string ans;
////		while (index < m + n) {
////			ans.push_back(ansArr[index]);
////			index++;
////		}
////		for (auto& c : ans) {
////			c += '0';
////		}
////		cout << ans << endl;
////		return ans;
////	}
////	
////};
//
////    string multiply(string num1, string num2) {
////        if (num1 == "0" || num2 == "0")
////        {
////            return "0";
////        }
////        int n = num1.size();
////        int m = num2.size();
////        auto it = vector<int> (n+m);
////        it.reserve(n + m);
////        for (int x = n - 1; x >= 0; x--)
////        {
////            int i = num1[x] - '0';
////            for (int y = m - 1; y >= 0; y--)
////            {
////                int j = num2[y] - '0';
////                it[x + y + 1] += i * j;
////            }
////        }
////        //进位
////        for (int k = n + m - 1; k > 0; k--)
////        {
////            it[k - 1] += it[k]/10;
////            it[k] = it[k]%10;
////        }
////        //判断首位是否有数据
////        int idex = it[0] == 0 ? 1 : 0;
////        string str;
////        //数字放入字符串中
////        while (idex < n + m)
////        {
////            str += it[idex]+'0';
////            idex++;
////        }
////       
////        cout << str << endl;
////        return str;
//
//      /*  class Solution {
//        public:
//            string reverseWords(string s) {
//                int length = s.length();
//                int i = 0;
//                while (i < length) {
//                    int start = i;
//                    while (i < length && s[i] != ' ') {
//                        i++;
//                    }
//
//                    int left = start, right = i - 1;
//                    while (left < right) {
//                        swap(s[left], s[right]);
//                        left++;
//                        right--;
//                    }
//                    while (i < length && s[i] == ' ') {
//                        i++;
//                    }
//                }
//                return s;
//            }
//        };*/
//
//            //string reverseWords(string s) {
//            //    int len = s.size();
//            //    int i = 0;
//            //    int mark = 0;
//            //    while (i < len)
//            //    {
//
//            //        if (s[i] == ' ')
//            //        {
//            //            //翻转 [mark i-1]
//            //            int x = mark;
//            //            int y = i-1;
//            //            while (x<=y)
//            //            {
//            //                swap(s[x++], s[y--]);
//            //            }
//            //            //更新mark
//            //            mark = i + 1;
//            //        }
//            //        i++;
//            //    }
//            //    return s;
//            //}
////class Solution {
////public:
//    /*string reverseStr(string s, int k) {*/
//        //int len = s.size();
//        //if (len < k)
//        //{
//        //    //翻转全部字符
//        //    reverse(s.begin(), s.end());
//        //    return s;
//        //}
//        //else if (len > k && len < 2 * k)
//        //{
//        //    //翻转前K个字符
//        //    int begin = 0;
//        //    int end = k - 1;
//        //    while (begin < end)
//        //    {
//        //        swap(s[begin], s[end]);
//        //        begin++;
//        //        end--;
//        //    }
//        //    return s;
//        //}
//        //else {
//        //    //len>2k
//        //    int i = 0;
//        //    int pos = 1;
//        //    int mark = 0;
//        //    for (i = 0; i < len; i++)
//        //    {
//        //        if (pos == 2 * k)
//        //        {
//        //            //翻转前[mark, mark+k]个元素
//        //            int begin = mark;
//        //            int end = mark + k - 1;
//        //            while (begin < end)
//        //            {
//        //                swap(s[begin], s[end]);
//        //                begin++;
//        //                end--;
//        //            }
//        //            mark = i + 1;
//        //            pos = 0;
//        //        }
//        //        pos++;
//        //    }
//        //    pos = pos - 1;
//        //    if (pos > k && pos < 2 * k)
//        //    {
//        //        //翻转前K个字符
//        //        int begin = mark;
//        //        int end = mark +k-1;
//        //        while (begin < end)
//        //        {
//        //            swap(s[begin], s[end]);
//        //            begin++;
//        //            end--;
//        //        }
//        //        return s;
//        //    }
//        //    if (pos < k)
//        //    {
//        //        //翻转全部字符
//        //        int begin = len - pos;
//        //        int end = len - 1;
//        //        while (begin < end)
//        //        {
//        //            swap(s[begin], s[end]);
//        //            begin++;
//        //            end--;
//        //        }
//
//        //    }
//
//        //}
//        //return s;
//
//   /* };*/
//    //bool isPalindrome(string s) {
//    //    string str;
//    //    //去除非字母字符
//    //    //转换大小写
//    //    for (auto it : s)
//    //    {
//    //        if (it >= 'a' && it<= 'z' || it>='A' && it <= 'Z'||it>='0'&&it<='9')
//    //        {
//    //            if (it >= 'A' && it <= 'Z')
//    //            {
//    //                str += it + 32;
//    //            }
//    //            else
//    //            {
//    //                str += it;
//    //            }
//    //        }
//    //    }
//    //    cout << str << endl;
//    //    int end = str.size() - 1;
//    //    int begin = 0;
//    //    while (begin < end)
//    //    {
//    //        if (str[begin] != str[end])
//    //        {
//    //            return false;
//    //        }
//    //        begin++;
//    //        end--;
//    //    }
//    //    return true;
//    //}
//class Solution {
//public:
//    string addStrings(string num1, string num2) {
//        int n = num1.size();
//        int m = num2.size();
//        if (num1 == "0" && num2 == "0")
//        {
//            return "0";
//        }
//        if (n >= m)
//        {
//            auto vit = vector<int>(n + 1);
//            int mark = n;
//            int  k = n-1;
//            int l = n;
//            int p = n+1;
//            for (int i = 1; i <= m; i++)
//            {
//                int x = num1[n - i] - '0';
//                int y = num2[m - i] - '0';
//                vit[mark--] = x + y;
//                k--;
//            }
//            if (k>=0)
//            {
//                while (k >= 0)
//                {
//                    vit[mark] = num1[k] - '0';
//                    mark--;
//                    k--;
//                }
//            }
//            //进位
//            for (int j = l; j > 0; j--)
//            {
//                vit[j - 1] += vit[j] / 10;
//                vit[j] = vit[j] % 10;
//            }
//            string str;
//            int index = vit[0] == 0 ? 1 : 0;
//            while (index < p)
//            {
//                str += vit[index++]+'0';
//            }
//            return str;
//
//
//        }
//        else {              //m>=n
//            auto vit = vector<int>(m + 1);
//            int mark = m;
//            int  k = m - 1;
//            int l = m;
//            int p = m + 1;
//            for (int i = 1; i <= n; i++)
//            {
//                int x = num1[n - i] - '0';
//                int y = num2[m - i] - '0';
//                vit[mark--] = x + y;
//                k--;
//            }
//            if (k >= 0)
//            {
//                while (k >= 0)
//                {
//                    vit[mark] = num2[k] - '0';
//                    k--;
//                }
//            }
//            //进位
//            for (int j = l; j > 0; j--)
//            {
//                vit[j - 1] += vit[j] / 10;
//                vit[j] = vit[j] % 10;
//            }
//            string str;
//            int index = vit[0] == 0 ? 1 : 0;
//            while (index < p)
//            {
//                str += vit[index++] + '0';
//            }
//            return str;
//        }
//    }
//};
//void test()
//{
//    string str1("9133");
//    string str2("0");
//    string str3("A man, a plan, a canal: Panama");
//    Solution str4;
//    str4.addStrings(str1,str2);
//}
//
//    //test();
//    //string strText = "How are you?";
//    //string strSeparator = " ";
//    //string strResult;
//    //int size_pos = 0;
//    //int size_prev_pos = 0;
//    //while ((size_pos = strText.find_first_of(strSeparator, size_pos)) != string::npos)//
//    //{
//
//    //    strResult = strText.substr(size_prev_pos, size_pos - size_prev_pos);
//    //    cout << strResult << " ";//How 
//    //    size_prev_pos = ++size_pos;
//    //}
//    //if (size_prev_pos != strText.size())
//    //{
//    //    strResult = strText.substr(size_prev_pos, size_pos - size_prev_pos);
//    //    cout << strResult << " ";
//    //}
//    //cout << endl;
//int main()
//    {
//        /*string a = "hello world";
//        string b = a;
//        if (a.c_str() == b.c_str())
//        {
//            cout << "true" << endl;
//        }
//        else cout << "false" << endl;
//        string c = b;
//        c = "";
//        if (a.c_str() == b.c_str())
//        {
//            cout << "true" << endl;
//        }
//        else cout << "false" << endl;
//        a = "";
//        if (a.c_str() == b.c_str())
//        {
//            cout << "true" << endl;
//        }
//        else cout << "false" << endl;*/
//    string str;
//    getline(cin, str);
//    cout << str << endl;
//    system("pause");
//    return 0;
//}
